home *** CD-ROM | disk | FTP | other *** search
/ The World of Computer Software / The World of Computer Software.iso / feedback.zip / FEEDBACK.DOC < prev    next >
Text File  |  1991-11-03  |  38KB  |  774 lines

  1. The program consists of five independent subprograms,
  2. each accessed through the Main Menu.  These notes take
  3. up the subprograms one at a time.
  4.  
  5. The subprogram ONE DIMENSION is only for iteration of
  6. real functions F of a real variable x.  This function
  7. may depend on a parameter r, as is the case with the
  8. default F(x) = rx(1-x).  The value of r may be adjusted
  9. as desired.
  10.  
  11. To produce a Web Diagram, one begins by using the
  12. command Graph to draw the graphs of y = F(x) and y = x. 
  13. It may also be necessary to adjust the viewing window
  14. with Ctrl-W.  Given an F (and an r-value), one is
  15. interested in the orbit produced by a prescribed Seed
  16. value for x; this serves as the 0th term in the
  17. resulting sequence.  One can request a particular member
  18. of the sequence by means of Iteration.  The Current term
  19. of the sequence is always on display.   By means of the
  20. options One and Many, the movement from one term of the
  21. orbit to the next can be seen in the graphics window and
  22. heard on the speaker.  The Trace and Noise keys allow
  23. one to disable either function.  The speed is also
  24. adjustable to a limited extent by means of the + and -
  25. keys.  [Incidentally, the chaotic sounds one often
  26. encounters in such experimentation are occasionally (and
  27. erroneously) called "random".  For the purpose of
  28. contrast, sound produced by an actual random-number
  29. generator is available; call up Noise in the One
  30. Dimension menu.]
  31.  
  32. In addition to the graphical display of orbit behavior,
  33. one may wish to see numerical data.  The List key stores
  34. such data in memory, starting with the current term, and
  35. continuing until the user presses Escape (or until the
  36. available memory is exhausted).  Press Display to scroll
  37. though the resulting data, or else Print it.
  38.  
  39. In the Bifurcation menu, one considers how the orbit of
  40. a specified seed value is affected by varying the value
  41. of the parameter r.  Each orbit is plotted vertically
  42. (as a set of dots), while the r-axis runs across the
  43. screen horizontally.  The command Graph begins the
  44. process, which proceeds from left to right.  If it is
  45. interrupted, the process starts where it left off,
  46. unless the screen has been cleared (Ctrl-C), the window
  47. has been reset, or the function has been changed.  The
  48. graphing window is adjusted by means of Ctrl-W, as
  49. usual.  Inasmuch as the scales on axes are not
  50. geometrically linked, they are adjusted independently. 
  51. Moreover, Zoom presents another windowing option:  Use
  52. the graphics cursor to mark one corner of the desired
  53. window, then move to the opposite corner and RETURN. 
  54. There are two other parameters of significance.  One
  55. must decide how many points of each orbit are to be
  56. plotted (before moving to the next r); one must also
  57. decide whether to skip (and not plot) any of the first
  58. transient terms of each orbit - doing so allows one to
  59. see only the limiting behavior.  One may also Overlay
  60. the graph of a function X(r) on the bifurcation diagram;
  61. once there, however, it can not be removed without
  62. clearing the screen.
  63.  
  64. The subprograms MANDELBROT and FRACTAL are for two-
  65. dimensional iteration:
  66.  
  67. MANDELBROT produces fractal images that come from the
  68. iteration of Q(z) = zz + c,  where z and c are complex
  69. variables.  There are two types of images.  First there
  70. are Julia images, for which one chooses a definite value
  71. of c and then colors points of the z-plane according to
  72. their dynamic behavior.  Then there is the Mandelbrot
  73. set, in which values of the parameter c are colored
  74. according to the dynamic behavior of z = 0  [In other
  75. words, is z = 0 attracted to infinity?  If so, how
  76. quickly?]  The Mode switch in this menu allows the user
  77. to choose between the dynamic and parameter planes.
  78.  
  79. The Julia Menu offers a variety of ways to draw a Julia
  80. set.  First, however, one must have the desired c-value
  81. in place; press X or Y to make any adjustments.  
  82.  
  83. The quickest drawing method is Inverse images.  There is
  84. not much to this menu; just Ctrl-Clear screen and Draw.
  85.  
  86. N.B: By Ctrl-Clear is meant Ctrl-C.  Similarly, Ctrl-
  87. Print and Ctrl-Retrieve mean Ctrl-P and Ctrl-R,
  88. respectively.
  89.  
  90. Another method to get a (monochrome) filled-in Julia set
  91. is with the Distance-Estimator Method, or DEM.  Clear
  92. the screen, then press Draw.  Until one presses Esc, the
  93. program keeps trying to find more points to color in the
  94. exterior of the Julia set.  As new patches are colored,
  95. their boundary points are put on a stack for eventual
  96. processing.  To assist the program in finding (small)
  97. isolated pockets, use the Cursor; the DEM search begins
  98. with the cursor position each time.
  99.  
  100. It is occasionally the case that one is trying to create
  101. an image that has thin, filament-like parts; these will
  102. not show up very well unless they are highlighted in
  103. some fashion, either with colored borders (see below) or
  104. by thickening the actual object being graphed.  In the
  105. DEM menu, this is the meaning of the Boundary parameter,
  106. which can be adjusted to suit the example (usually a
  107. value between 1 and 3 works).  Remember that thickening
  108. the boundary results in the blurring of the entire
  109. image.
  110.  
  111. The Slow Draw process produces fractal images one pixel
  112. at a time.  There are two options: One can create files
  113. for Screen display, or one can create files to be dumped
  114. directly to the Printer.  
  115.  
  116. Screen image files are drawn as they are filed.  If the
  117. project is a long one, however, it is desirable to turn
  118. off the monitor.
  119.  
  120. With either storage mode, one needs to have made some
  121. preparations first.  Make sure that the window is
  122. positioned correctly.  Use Rep max to select the
  123. maximum number of iterations.   The Escape threshhold
  124. determines when orbits have migrated close enough to
  125. infinity to be terminated.  [For many drawings, one
  126. wants to set this at 4, which is minimal, but the DEM
  127. procedure and the Binary coloring scheme (below) require
  128. a higher setting for the sake of accuracy.]  Finally,
  129. set up the Colors.  This is a list of the colors that
  130. will be used cyclically to mark the escape to infinity. 
  131. To enter such a list, one Appends individual color
  132. numbers to the existing list, which can be Emptied if a
  133. fresh list is desired.  Only color numbers in the range
  134. 0..Max color number are understood.  If one is preparing
  135. an image for the printer (see below), color numbers can
  136. refer to shades of grey, and the displayed Max is
  137. adjusted accordingly.  When all preparations are
  138. complete, press Slow Draw.  A file name will be
  139. requested.  The screen is filled eight rows at a time,
  140. so there will be periods when nothing seems to be
  141. happening (except that the counter shows which row is
  142. being worked on).  The drawing process can be
  143. interrupted by pressing Escape.  A drawing can be
  144. resumed by pressing Finish.  There are two additional
  145. switches in the Colors menu:  If Binary is on, the
  146. program will use only the first two colors in the list
  147. to highlight the external rays and the equipotential
  148. lines of the Julia set.  The Override switch allows you
  149. to alter an image when it is redrawn with Ctrl-Retrieve.
  150. Each fractal image is stored as if there were a 255-
  151. color palette available.  The chosen color sequence
  152. (stored with the image) is automatically selected to
  153. decipher the data, unless the Override switch is on, in
  154. which case the current color sequence is used instead.
  155.  
  156. Printer files store high-resolution images, which make
  157. it possible to surpass the resolution of one's graphics
  158. card.  No printing is done, however, until the file is
  159. requested with Ctrl-Retrieve.  As above, there are a few
  160. preparations that must be made before file creation can
  161. begin.  Here are the details that apply specifically to
  162. printer files:  One must designate how the color
  163. sequence is to be interpreted by the printer.  In other
  164. words, each tabled screen color must be associated to
  165. some ink color; if one does not have a color printer,
  166. then one may assign shades of gray to the screen colors. 
  167. Moreover, even if one does not have a color graphics
  168. card, the color table numbers (still called "screen
  169. colors") can be matched with shades of gray.  The
  170. matching of color to ink is done in the Ctrl-Print menu,
  171. which is also where one must identify the printer that
  172. will receive the completed image.  It is also necessary
  173. to select the number of horizontal dots.  There are
  174. constraints:  Dot-matrix printers in 80-column mode can
  175. handle at most 960 horizontal bits.  Laser printers must
  176. store the entire image before it can be printed.  The
  177. greater the resolution, the greater the time needed to
  178. produce the image.
  179.  
  180. If the finished image is symmetric, the program will
  181. produce the second half by copying the first half.  For
  182. example, if the window is centered at the origin, then a
  183. Julia image will have odd symmetry.  Or, if the window
  184. is bisected by the x-axis, then a Mandelbrot image will
  185. have x-axis symmetry.  The detection is automatic.
  186.  
  187. It is possible to significantly reduce drawing time, by
  188. capitalizing on the periodicity that the black points
  189. represent.  Most of the orbits that do not lead to
  190. infinity fall into repeating cycles of points, and one
  191. can save a lot of time if such cycling is detected,
  192. thereby preventing the repetition counter from reaching
  193. Rep Max.  This is the purpose of the Periodicity menu,
  194. where one can specify whether cycle-detecting is to take
  195. place (it does take time, of course, and may therefore
  196. be not worth turning on), and which periods are to be
  197. looked for.  The Tolerance, which is entered in pixel-
  198. width units, defines how close two points of an orbit
  199. have to be in order for the detector to consider the
  200. orbit a closed cycle.  Cycle-detection can save time,
  201. but it also can err near the boundary, where convergence
  202. is a slow process, anyway.  For this reason, the program
  203. tries to sense when the boundary is near and then
  204. temporarily disable this feature; still, errors can
  205. occur.  The Destiny menu described below can help
  206. determine which periods to check for.  When framing a
  207. sketch (with the Zoom window), it is best to include
  208. complete black components (i.e., avoid wide swatches of
  209. border points), for it takes a long time for points near
  210. the border (black or not) to reveal their true colors.
  211.  
  212. The Orbits menu activates a cursor in the graphics
  213. window, which can be placed by using the arrow keys. 
  214. One can follow an orbit by pressing One step at a time,
  215. or else Many for autopilot.  This cursor retains its
  216. position in the program (even after one Escapes the
  217. Orbit menu); this is handy when one wants to go back and
  218. forth between Mandelbrot mode and Julia mode.  To see
  219. where the orbit is going, press Destiny.  Black points
  220. near the boundary can produce unreliable results.
  221.  
  222. Most of the drawing options that are present in Julia
  223. (dynamic) mode also apply in Mandelbrot (parameter)
  224. mode.  The Cursor entry in this menu allows one to
  225. select points in the Mandelbrot set (for use in the
  226. Julia menu, perhaps) and to examine their Destinies
  227. (actually the destiny of zero).
  228.  
  229. One common option is the Animation feature, which allows
  230. the user to create a sequence of small images, which can
  231. be saved to disk and Played back later.  Press Start to
  232. begin.  After the filename (for the sequence of frames)
  233. has been chosen, the drawing starts.  It appears in the
  234. small animation window (whose default position is the
  235. upper left corner of the graphing window).  Each frame
  236. is produced by the slow-draw process; the completed
  237. images are written to separate diskfiles FILENAME.F##. 
  238. Drawing continues until there is no more room in RAM to
  239. store all the images (or until Esc is pressed), for the
  240. Playback requires that they all be stored there.  The
  241. size and placement of the animation window can be
  242. adjusted; press Move window.  Larger windows mean fewer
  243. frames will fit in RAM, of course.
  244.  
  245. There are two Types of sequences:
  246.  
  247. First there are Zoom sequences.  One centers the window,
  248. then chooses a Reduction percentage (which determines
  249. how each window relates in linear dimensions to the
  250. preceding; default is 80%).  All images are concentric.
  251.  
  252. Second (for Julia mode only) there are Promenades.  One
  253. chooses a path in the parameter plane (the c-plane),
  254. specified by two coordinate functions and an interval of
  255. t-values.  The t-interval is divided by as many t-values
  256. as the number of frames allows.  Each image has a common
  257. window, but shows a different Julia set.
  258.  
  259. A special Mandelbrot item is the Zero Orbit menu.  One
  260. can request those points of the Mandelbrot set for which
  261. the orbit of zero is finite.  In other words, one can
  262. obtain the coordinates either for centers of the
  263. periodic components (Transients = 0) or for Misiurewicz
  264. points (0 < Transients).  Press Draw to show the current
  265. list on the screen, then press Cursor to see coordinates
  266. for individual entries.  The search for (more) examples
  267. of the current type is activated by pressing Find.  As
  268. many as 3200 can be held in memory.  The search
  269. procedure does not automatically eliminate redundant
  270. entries.  That is, examples of period 3 will appear in
  271. the list for period 6.  However, entries in the periodic
  272. list will not appear in the eventually periodic list;
  273. therefore the former list should be compiled first. 
  274. Period 1 and 2 examples are automatically excluded from
  275. the Misiurewicz lists.
  276.  
  277. Whenever the cursor is moved about in the plane of the
  278. Mandelbrot set (as in the preceding), its coordinates
  279. are always retained as the current Julia constant (and
  280. stored as constants A and B).  This is a convenience
  281. when one wishes to jump back and forth from Mandelbrot
  282. to Julia mode.  One also can center the window at the
  283. current cursor value by setting X=A and Y=B in the
  284. window change menu (Ctrl-W).
  285.  
  286. Finally, consider the special Ctrl-Keys that apply in
  287. this program.  Ctrl-X will superimpose the coordinate
  288. axes on the graphics window; pressing Ctrl-X a second
  289. time will erase them.  Ctrl-D allows one to set the
  290. degree of the mapping at values other than the default 2
  291. (one can explore mappings of the form z^n + c for n-
  292. values from 2 to 9).  If the computer is equipped with
  293. an EGA card, or if a VGA card is used in medium-
  294. resolution mode (which is the same as EGA), then there
  295. is enough video memory available to activate the Ctrl-L
  296. key, which allows one to toggle back and forth between
  297. the last two retrieved screens, or the Ctrl-T key, which
  298. determines whether the image-retrieval process is shown. 
  299. Ctrl-R retrieves files from disk.  Ctrl-S will save the
  300. contents of the drawing window.  Finally, Ctrl-Zoom is
  301. for color cycling, in which rapid recoloring of the
  302. color bands gives the appearance of motion.  One must
  303. have an EGA card for this to work, however.
  304.  
  305. The FRACTAL subprogram is for examining two-dimensional
  306. iterations that are not of the special type that MANDEL
  307. can handle.  One iterates a single function (a trans-
  308. formation of the plane, that is) and colors the points
  309. of the plane according to their orbital behavior.  The
  310. function is provided through the menu entry Mapping,
  311. and it may be given component by component; the first
  312. is called F and the second is called G.  For instance,
  313. the complex squaring function zz can be written as
  314. (x+yi)(x+yi) = xx - yy + 2xyi, so that F could be
  315. entered as xx - yy and G as 2xy.  Because it is so
  316. cumbersome to describe a one-dimensional complex example
  317. as a two-dimensional real example, however, the user is
  318. permitted to simply enter F(z) in this case.  Use the
  319. Input switch to select the desired entry mode.  After
  320. providing a transformation, one must then describe how
  321. colors are going to be assigned, once drawing begins. 
  322. This is done by means of two menus.
  323.  
  324. A plotted color is determined as soon as an orbit enters
  325. a designated region of the plane.  These regions can be
  326. specified by means of the Neighborhoods menu.  To add a
  327. new neighborhood to the list, first select New.  There
  328. are two types of neighborhood description.  One can
  329. provide a target point and the radius of a disk centered
  330. there, or one can provide an inequality in the form 0 <
  331. D(x,y).  If both descriptions are present, the latter
  332. takes precedence.  Neighborhoods of infinity are dealt
  333. with in the latter fashion.  The list of neighborhoods
  334. may be inspected with the up/down arrow keys and edited. 
  335.  
  336. As in MANDEL, the Colors menu is where one specifies
  337. color sequences.  This can be done only after one has
  338. entered the target neighborhoods; these will then appear
  339. in the menu, ready to be assigned their color lists. 
  340. One may also adjust the maximum number of Repetitions
  341. that can take place before calculations with a given
  342. orbit are broken off.  Ctrl-W places the viewing window.
  343.  
  344. In the rare situation where the finished diagram has
  345. either x-axis or origin symmetry, the computer will take
  346. advantage of this by copying the second (lower) half of
  347. the diagram from the first half.  The user must inform
  348. the computer by setting the Symmetry switch, however.
  349.  
  350. Finally, select Draw.  One can produce files for display
  351. on either the printer or on the screen.  After making
  352. the necessary choices, one is asked for a file name, and
  353. drawing will then begin.
  354.  
  355. The Animation menu (described for Mandelbrot/Julia)
  356. applies to FRACTAL explorations also.
  357.  
  358. The quadratic method Inverse Iteration can be applied to
  359. general examples, but one must work through the IFS
  360. subprogram, described below.
  361.  
  362. It is also possible to produce parameter-plane diagrams,
  363. which are analogous to the Mandelbrot set.  In other
  364. words, one has a family of mappings F(c,z) of the plane,
  365. and one wishes to create a colored map that shows how
  366. the orbit of zero is dependent on the value of the
  367. parameter c.  To produce an image of this sort, press
  368. Ctrl-Dynamics.  This will toggle the mode ON or OFF.  To
  369. see which state is active, call up the Ctrl-Key list; it
  370. will display the effect of the next Ctrl-D press (thus
  371. if the next press turns Dynamics ON, it is currently
  372. OFF).  In the resulting drawing, it may be necessary to
  373. allow for moving targets; in other words, the
  374. neighborhood centers may depend on c.  (This was not
  375. the case in the Mandelbrot menu, where the only target
  376. was the point at infinity.)  If this is the case, the
  377. information must be entered as follows:  First use the
  378. Special descriptor key to enter a formula for the
  379. position of the center, as a complex-valued function of
  380. c.  Then provide a negative Radius entry.  This signed
  381. entry is read as a signal that the Special descriptor
  382. defines a target point (not a neighborhood).
  383.  
  384. It may happen that the parameter-plane diagram (Dynamics
  385. OFF) contains some black (undecided) points, and there
  386. may be enough of them to make periodicity-checking worth
  387. the time.  This is handled just as in the Mandelbrot
  388. menu.  The Destiny calculation (in the Orbit menu) can
  389. help discover which periods are to be detected.
  390.  
  391. In Dynamical mode, the Orbits menu allows one to watch a
  392. moving cursor trace out the orbits of the transformation
  393. under investigation.  The most helpful aspect of this
  394. feature is that it can be used to locate and specify
  395. target points before the drawing begins!  In other
  396. words, let the cursor find a fixed point, then Add it to
  397. the target list.  It will still be necessary to enter
  398. the Neighborhood menu to adjust the radius entries, or
  399. to delete any unwanted neighborhoods.
  400.  
  401. ITERATED FUNCTION SYSTEM subprogram:
  402.  
  403. IFS is the customary abbreviation.  One has a
  404. transformation of the plane that is actually a list of
  405. transformations, randomly accessed; which one is used in
  406. any given application is not known in advance, though
  407. the probabilities can be affected by means of the Weight
  408. that is associated with each entry.  To input the list,
  409. call up the Mapping menu.  Each transformation in the
  410. list is entered according to the conventions described
  411. above.  Use New to add to the list, use F and G to edit
  412. existing entries, and use the up/down arrows to inspect
  413. the list.  One may also retrieve IFS files from the disk
  414. with Ctrl-R.
  415.  
  416. The Inverse Iteration method for generating Julia sets
  417. (described above) is an example of an IFS, so this IFS
  418. subprogram provides another way of generating (non-
  419. quadratic) Julia sets.  It is necessary to provide a
  420. formula for every branch of the inverse transformation.
  421.  
  422. Because many interesting IFS include affine mappings,
  423. there are two auxiliary ways provided for defining such
  424. transformations:
  425.  
  426. The Fixed Points menu is where one can focus on the
  427. geometric properties of each affine map; to specify
  428. such a map, it suffices to provide a fixed point, a
  429. rotation angle - interpreted in radians - and a dilation
  430. constant.  If Randomize is selected, the data is
  431. randomly selected, but it may be entered or altered via
  432. the editing process.  The number of transformations
  433. (i.e., the number of fixed points - initially 3) is
  434. increased when a New (random) pt is requested; it is
  435. decreased by Kill (the current) pt.   When the geometric
  436. data is acceptable, press Set-up/Orbits, which makes the
  437. program calculate and store the functions F (and G) for
  438. each mapping, then go automatically to the Orbit menu.
  439.  
  440. The other auxiliary menu is Collage, which allows one to
  441. define mappings by means of what they do individually to
  442. a reference triangle.  Triangle Show places a triangle
  443. ABC (initially random) on the screen; it may be
  444. repositioned at any time by moving its vertices.  The A,
  445. B, C keys match the vertices with the cursor, which is
  446. then moved with the arrow keys.  At any stage, the state
  447. of the triangle can be shown by Triangle Show.  To
  448. define a new affine map (with reference to the source
  449. triangle), one chooses Make new image, which
  450. (invisibly) re-establishes the source triangle on the
  451. screen, ready to be transformed (via the cursor) into
  452. its image.   The complete list of image triangles can be
  453. inspected by a combination of Next and Triangle Show;
  454. editing is of course possible.  When the list is
  455. complete, Set-up/Orbits causes the program to calculate
  456. the system of functions (F,G), then exit automaticallly
  457. to the Orbits menu.  This method of creating IFS makes
  458. it easy to draw ferns, for example.  
  459.  
  460. Given that an IFS is in place, one uses the Orbit menu
  461. to see the orbits.  Before drawing, Ctrl-Clear the
  462. screen and press Autowindow.  This positions the window
  463. to enclose the dynamics.  (If additional adjustment is
  464. necessary, use Ctrl-W.)  Switch on Trace in order to see
  465. the points on an orbit.  In addition to the One step
  466. option, one can activate specific component functions of
  467. the IFS by pressing 1, 2, ....
  468.  
  469. Use Ctrl-S to save information to disk storage.  From
  470. the Mapping menu, this stores the actual IFS; from the
  471. Collage or Fixed point menus, this stores the geometric
  472. data instead, from which the functions are calculated. 
  473. In any case, Ctrl-R retrieves all the necessary
  474. information.  There is of course no need to save IFS
  475. sketches!
  476.  
  477. The POTPOURRI subprogram calls up a variety of standard
  478. fractal images.  
  479.  
  480. First there are Monster Curves, which are defined as
  481. limits of piecewise-linear examples; one gets the next
  482. stage by requesting Next.  
  483.  
  484. The submenu Your Example allows you to examine the
  485. string-rewriting codes that produce these curves, as
  486. well as invent some of your own.  Each example is
  487. generated in a LOGO-like fashion by a string of
  488. instructions, where + and - signify changes of direction
  489. (rotations through some prescribed angle), letters A..F
  490. stand for segments (traced in the forward direction),
  491. and letters U..Z mark places where code replacements are
  492. made:  In the transition from one stage to the next, the
  493. instruction string is enlarged, each symbol replaced
  494. according to a table.  For instance, the triangle
  495. F++F++F (where + is interpreted according to a 6-sector
  496. division of 360 degrees) turns into the von Koch
  497. snowflake when the single replacement rule F --> F-
  498. F++F-F is applied over and over again.  Because the
  499. instruction strings become very long, the computer
  500. usually runs out of memory after about five generations
  501. (which is often simultaneous with a loss of clarity on
  502. the screen).  One alters the current table of
  503. replacements by entering this menu and then selecting
  504. the Character and then entering the Replacement string
  505. for it.  For example, alter the von Koch replacement
  506. rule to F --> FF-F++F-FF, then Draw.  The Initial
  507. configuration may also be altered.  It is customary for
  508. + and - to carry over unaltered to the next generation,
  509. but even this is not a hard and fast rule.  Sectors=10
  510. means that each + becomes a 36-degree counter-clockwise
  511. change of direction, and so forth.  Another string-
  512. rewriting option is to use left/right parentheses, which
  513. tell the computer to save/recall the cursor position
  514. during the drawing process [in other words, ) means lift
  515. the pen and put it down at the place the previous (
  516. marked].  For an example that illustrates this, request
  517. Plant.  The (relative) Lengths of the forward movements
  518. A..F are also adjustable; the Sierpinski example
  519. illustrates this.
  520.  
  521. The Cantor menu produces examples that are obtained by
  522. punching out pieces from standard shapes.  The Growth
  523. menu presents some simulations.  Crystal places a seed
  524. at the center of the screen and sets several point
  525. molecules randomly floating in solution; when a molecule
  526. happens to collide with the seed, it sticks (and is
  527. replaced by a new floater).  The number of active
  528. floaters is controlled by Points.  Visible changes in
  529. the pattern are SLOW to occur at first!  Vegetation is
  530. similar; a steady rain of random cells produces growth
  531. from the bottom of the screen upward.  For both
  532. simulations, use Ctrl-Clear screen first.  To see the
  533. random points, use the Ctrl-Watch switch.
  534.  
  535.  
  536.                  GENERAL INFORMATION
  537.  
  538.  
  539. PEANUT software should run on all IBM compatibles.  It
  540. is only necessary that the appropriate graphics
  541. interface file be present.  If these programs are
  542. copied, it is therefore important that the appropriate
  543. file *.BGI be copied, too.  The programs automatically
  544. try to select the finest graphics mode; to override the
  545. default selection, press Ctrl-G (this will be necessary
  546. with the ATT 6300, for example).  The programs are
  547. compiled with Borland's Turbo Pascal, version 5.5.  If
  548. the host computer has a numeric coprocessor (in other
  549. words, an 8087 chip), these programs will try to take
  550. advantage of it.  Most of the programs have associated
  551. documentation files *.DOC; you are reading one now!
  552.  
  553. Interaction with the computer takes two forms:   Either
  554. the user is making menu selections or else the user is
  555. providing buffered input (that is, numbers or names). 
  556. In the former case, no ENTER is required - touching a
  557. single key (perhaps in combination with the Ctrl key)
  558. does the job.  In the latter case, however, the computer
  559. has to be told when the input is complete, and this
  560. requires ENTER as a signal.  When the computer is
  561. waiting for this type of input, a box will open up on
  562. the screen, into which the necessary information is to
  563. be typed.  One may edit the data in the box, using the
  564. left and right arrow keys to move the cursor.  If the
  565. first keypress of an editing session is not an editing
  566. keypress (an arrow, say), the input box is emptied.
  567.  
  568. There are a few standard two-key combinations.  For
  569. example, Ctrl-C clears the graphics window, Ctrl-P is
  570. for printing, Ctrl-W gets the window reset menu, Ctrl-F
  571. gets function library menus, and Ctrl-END ends programs. 
  572. Other Ctrl-keys are described below.  Alt-C allows the
  573. user to assign new values to the twenty-six variables
  574. A..Z.  Pressing the desired letter displays the current
  575. value of that letter, and pressing = activates the input
  576. process.  Alt-F toggles between fixed point and floating
  577. point display formats (see below).  In each program,
  578. Ctrl-K calls up a menu of all the available special
  579. keys.  These keys are usually not mentioned elsewhere in
  580. the menus.  
  581.  
  582. Whenever the program is in a scrolling mode (the arrow
  583. keypad used to examine a text or a table), one can
  584. request a search by pressing ENTER.  The program finds
  585. the first instance of the string you enter, and places
  586. it in the window, usually on the top display line.  The
  587. search is not case-sensitive.  For example, to scroll
  588. through THIS file, together with a program-specific help
  589. file, just press ?.  The necessary *.DOC files must be
  590. found in the current directory.
  591.  
  592. The function interpreter built into the programs has
  593. been taught to understand most elementary function names
  594. (sin, cos, tan, csc, sec, cot, ln, log, exp, sinh, cosh,
  595. tanh, arcsin, arccos, arctan, int, sqr = square root,
  596. abs, and !) as well as some unconventional ones:
  597. root(n,x) = nth root of x; pow(n,x) = nth power of x;
  598. iter(n,f(x)) = n-fold iteration of f(x); max(a,b,..);
  599. min(a,b,..); sgn(x) = x/abs(x); frac(x) = x-int(x);
  600. binom(n,r) = n!/r!/(n-r)!; join(f|c,g|d,...,h) =
  601. function defined by y=f(x) for x<=c, y=g(x) for c<x<=d,
  602. ..., and y=h(x) for remaining x-values; sum(b,f(n,x)) =
  603. sum of f(n,x) for n=0 to n=b; prod(b,f(n,x)) = product
  604. of f(n,x) for n=0 to n=b.  In the latter two cases, the
  605. indexing variable defaults to n and the starting value
  606. defaults to 0, but both can be adjusted by means of the
  607. Ctrl-Function library menu.
  608.  
  609. If the host computer is new enough, the user will be
  610. able to choose between pi and Ctrl-P, sqr and Ctrl-S,
  611. and sq (or ^2) and Ctrl-E; these Ctrl-key presses insert
  612. the special graphics characters.  The program routinely
  613. inserts a left parenthesis after Ctrl-S, for parentheses
  614. are required in all function calls.
  615.  
  616. The user is permitted to add to the library of function
  617. names, by calling up the New Names submenu of the
  618. Function library menu.  Each new function name is
  619. limited to six alphabetic characters (no numerals).  The
  620. variables used to define the new functions are of no
  621. significance; OSC(T)=SIN(1/T) produces the same result
  622. as OSC(X)=SIN(1/X), that is.
  623.  
  624. The usual signs of algebra are used.  Exponentiation may
  625. be denoted ^.  The multiplicative * can usually be left
  626. out.  For example, 2x is interpreted to mean 2*x. 
  627. However, pix is not read pi*x.   Any letter can be used
  628. as a numerical variable, and assigned a specific value
  629. at any time, via the Alt-C option (see above).  For
  630. example, axx + bx + c stands for a general quadratic
  631. function, whose coefficients may be adjusted at will,
  632. without the necessity of retyping the formula every
  633. time.  Any string of letters and numbers will be treated
  634. as a product of constants and variables, if it is not
  635. found in the library of function names.  In particular,
  636. note that xpi is read as x*pi, whereas pix is read as
  637. p*i*x.  The process of translation starts at the left
  638. end of every string.  Upper and lower cases are not
  639. distinguished.  Brackets, braces, and parentheses may
  640. all be used as grouping symbols.
  641.  
  642. It is occasionally convenient to be able to enter
  643. numerical input in non-decimal form;  sqr(3) instead of
  644. 1.73205, 2pi instead of 6.28319, etc.  This is usually
  645. allowable.
  646.  
  647. In many of the graphics programs, it is desirable or
  648. necessary to move the viewing window around or to change
  649. its size.  This is done by adjusting either the Width of
  650. the frame or the coordinates (Horiz and Vert) of the
  651. Center.  For blowups, there is a rigid tenfold Zoom
  652. window.  When coordinate axes are showing, it is
  653. occasionally necessary to regulate the scale markings on
  654. the axes, by means of the Units/tick settings.  For
  655. example, setting Horiz = pi/2 might be desirable when
  656. graphing trigonometric functions.  For another, if the
  657. viewing window showed x-values from -60 to 120, it would
  658. be of no use to have 180 divisions marked on the x-axis. 
  659. In this case, one could simply direct the computer to
  660. mark every tenth one (Horiz = 10), which produces a less
  661. confusing image.  In fact, if a window request causes
  662. the program to mark more than about fifty tick marks on
  663. an axis, it will automatically adjust the setting for
  664. that axis.  One may compress or expand the vertical
  665. Scale, relative to the scale on the horizontal axis. 
  666. One may also blow up a (small) portion of the window
  667. with a Flexible window, defined by Marking one corner
  668. and then moving to the opposite corner and pressing
  669. ENTER.  Because the shape of the resulting box is
  670. variable, this procedure will necessarily distort the
  671. vertical scale.  When you are done with the tiny window,
  672. the screen can be restored to its nominal appearance, by
  673. pressing Default in the main Window menu.  It is also
  674. possible to define a window by specifying the four
  675. Extreme values of the variables.  This will probably
  676. also distort the vertical scale.
  677.  
  678. Sending images to your printer is fairly easy, unless
  679. you wish to avoid the built-in distortion that computing
  680. machinery produces.  In other words, your circles may
  681. not look like circles, and perpendicular lines may
  682. appear to be non-perpendicular.  It is possible to
  683. compensate for this effect by adjusting the Vertical
  684. scale in the Window Change menu, but only before the
  685. drawing is done.  You will have to experiment a bit. 
  686. The unfortunate rule is that drawings can appear correct
  687. either on the screen or on the printer, but seldom on
  688. both.  Overhead projection devices complicate matters
  689. even more.
  690.  
  691. Most procedures are interruptible.  If you do not want
  692. to finish a drawing (or a game) in progress (whether on
  693. the screen or on your printer), just press Esc.
  694.  
  695. In the event that a program creates files, the program
  696. will prompt the user for filenames, and it will
  697. understand if files on other drives are specified.  For
  698. example, an elaborate geometric construction could be
  699. stored as B:GOLDEN, which tells the computer not only
  700. what the file is to be named (GOLDEN), but also where
  701. the file is to be placed (on drive B).  This also
  702. applies to file retrieval, of course.  Do not include
  703. extensions in your filenames -  they will be ignored. 
  704. (Each program assigns special extensions.)
  705.  
  706. Some of the plotting programs are equipped with a menu
  707. that allows one to add text to diagrams.  This feature
  708. is activated with the Ctrl-Add/Del Text key.  The
  709. displayed text string can be placed anywhere in the
  710. figure.  When you request Write, the text is centered at
  711. the cursor position, and stored as part of the figure;
  712. when you request Erase, it is removed from the record.  
  713.  
  714. Some of these programs are equipped with small pop-up
  715. windows, activated with the function keys F1 .. F4, and
  716. deactivated with Ctrl-F1 .. Ctrl-F4.  Side-by-side
  717. comparisons of related graphs are thus made possible. 
  718. Windowing commands (issued through Ctrl-C or Ctrl-W) are
  719. always applied to whichever of the five windows is
  720. currently active.  Whenever one of these windows is
  721. activated from within the Window Reset menu, its
  722. parameters are automatically set equal to the parameters
  723. of the previously active window.  These auxiliary
  724. windows tie up a lot of memory; if you want to disable
  725. them (to reclaim memory), use the Ctrl-G option in the
  726. main menu.
  727.  
  728. If your graphics card allows, the programs will run in
  729. color.  The Ctrl-H key calls up a color menu.  The T, F,
  730. M, and D keys cycle through the available colors for
  731. text, frame, messages/axes, and drawing, respectively. 
  732. Tapping the spacebar cycles through other color
  733. combinations, including the background.  In sixteen-
  734. color mode, one can choose the sixteen from sixty-four
  735. available colors; use the arrow keys.
  736.  
  737. There are two methods of displaying decimal values:
  738. floating-point and non floating-point.  For example, if
  739. only eleven spaces were available for display, the
  740. number 0.00001234567 could appear either as 0.000012346
  741. or as 1.234567E-5; the latter is preferable because it
  742. shows more significant digits.  Programs are in a fixed-
  743. point mode initially; to switch modes, press Alt-F.  In
  744. floating-point mode, the computer will choose the
  745. display that shows more significant digits.  If only
  746. eight spaces are available, then 0.012346 is better left
  747. as is, for 1.235E-3 shows fewer significant digits.  On
  748. the other hand, large numbers are shown exponentially
  749. regardless of the mode; 123456789101112131415 has to be
  750. shown (approximately) as 1.234567891E+20, if fifteen
  751. spaces are available for display.
  752.  
  753. Printer support is provided for the standard dot-matrix
  754. printer, as well as the Hewlett-Packard LaserJet and
  755. PaintJet printers. To get the printing menu, use Ctrl-P. 
  756. The Device switch steps through the available printers. 
  757. The Region switch selects how much of the screen is to
  758. be copied: everything, or else just the graphing window. 
  759. One may also associate specific screen colors with
  760. printed colors (black, white, and shades of gray for
  761. printers that can not produce color).  For simple black-
  762. and-white images, there should be no need to change the
  763. default settings; just press P for action.  If the
  764. program does not detect a printer online, it will tell
  765. you so.
  766.  
  767. This program is perpetually in a state of revision.  You
  768. may obtain an up-to-date copy at any time by sending a
  769. formatted diskette (360K, 720K, or 1.2M) and a prepared
  770. mailer to
  771.       Richard Parris
  772.       Phillips Exeter Academy
  773.       Exeter NH         03833
  774. Comments and suggestions welcome.  Tel: (603)-772-1044